package cn.doitedu.day05

import cn.doitedu.day01.utils.SparkUtil

/**
 * @Date 22.4.3
 * @Created by HANGGE
 * @Description
 */
object A03_行动算子_TakeOrdered {
  def main(args: Array[String]): Unit = {

    val sc = SparkUtil.getSc
    val rdd1 = sc.parallelize(List(9, 1, 2, 3, 7, 5, 4))
   /* val rdd1 = sc.parallelize(List(
      User (1,"zss",34) ,
      User (2,"lss",14) ,
      User (3,"ww",24) ,

    ))*/

    /**
     * takeOrdered 柯里化的方法
     * 参数列表01    获取元素的个数
     * 参数列表02    隐式参数  比较器  Int类型 默认有比较器  升序
     */
   // val res: Array[Int] = rdd1.takeOrdered(2)
    //隐式函数  Int  排序  降序
  implicit  def orderInt:Ordering[Int]= {
     new Ordering[Int] {
       override def compare(x: Int, y: Int): Int = -(x - y)
     }
   }

 /*   implicit  def orderUser:Ordering[User]={
     new  Ordering[User] {
       override def compare(x: User, y: User): Int = -(y.age - x.age)
     }
   }*/
    /**
     * 获取最大的两个元素
     * rdd处理的元素 排序
     *  def takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T]
     */
    val res = rdd1.takeOrdered(2)
    println(res.toList)
    sc.stop()
  }
}
